package org.kwin.spring.beans.factory;

/**
 * @author : wangkai
 * @version V1.0
 * @Package org.kwin.spring.beans.factory
 * @Description:
 * @date 2021年09月28日 9:49
 **/
public interface BeanFactory {
    
    Object getBean(String name);
    
    <T> T getBean(String name, Class<T> requiredType);
    
    Object getBean(String name, Object... args);
    
    <T> T getBean(Class<T> requiredType);
    
    <T> T getBean(Class<T> requiredType, Object... args);
    
    boolean containsBean(String name);
    
    boolean isSingleton(String name);
    
    boolean isPrototype(String name);
    
    boolean isTypeMatch(String name, Class<?> typeToMatch);
    
    Class<?> getType(String name);
    
    String[] getAliases(String name);
}
